import axios from 'axios';
import {baseNotifyInfo} from '@/utils/utils.js';
import {StatusCodeEnum} from '@/enum/StatusCodeEnum.js';
// 创建 axios 实例
const service = axios.create({
    baseURL: '/api', // 根据实际情况修改，这里假设 Laravel API 前缀为 /api
    timeout: 60000*3 // 请求超时时间
});

// 请求拦截器
service.interceptors.request.use(
    config => {
        // 记录请求开始时间
        config.metadata = { startTime: new Date() };
        // 在发送请求之前做些什么，例如添加请求头
        // 这里可以添加 token 等信息
        // const token = localStorage.getItem('token');
        // if (token) {
        //     config.headers['Authorization'] = `Bearer ${token}`;
        // }
        return config;
    },
    error => {
        // 处理请求错误
        console.log(error);
        return Promise.reject(error);
    }
);

// 响应拦截器
service.interceptors.response.use(
    response => {
        // 计算响应时间
        const endTime = new Date();
        const startTime = response.config.metadata.startTime;
        const duration = endTime - startTime;
        console.log(`请求 ${response.config.url} 的响应时间为: ${duration}ms`);
        
        const res = response.data;
        // 根据实际业务情况处理响应数据
        if (res.code !== 200) {
            // 这里可以根据不同的错误码进行不同的处理
            // return Promise.reject(new Error(res.message || 'Error'));
            return res;
        } else {
            return res;
        }
    },
    error => {
        // 处理响应错误
        baseNotifyInfo(StatusCodeEnum.response_erro(error))
        return Promise.reject(error);
    }
);

export default service;
    